package cn.tedu.search.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
@Accessors(chain = true)  // 支持链式set赋值
@AllArgsConstructor       // 自动生成包含全部参数的构造方法
@NoArgsConstructor        // 自动生成无参数的构造方法

// @Document注解标记当前类是ES框架对应的实体类
// 属性indexName指定ES中对应的索引名称,运行时,如果这个索引不存在,SpringData会自动创建它
@Document(indexName = "items")
public class Item implements Serializable {

    // SpringData通过@Id注解来标记当前实体类的主键
    @Id
    private Long id;

    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String title;

    // FieldType.Keyword类型表示当前字段是不需要分词的字符串
    @Field(type = FieldType.Keyword)
    private String category;
    @Field(type = FieldType.Keyword)
    private String brand;
    @Field(type = FieldType.Double)
    private Double price;

    // imgPath是图片路径的属性,不会成为搜索条件,所以这个列可以不创建索引,节省空间
    // index = false就是不创建索引的设置
    // 所谓不创建索引,只是不为当前字段创建索引列表,但是数据是保存在ES中的
    @Field(type = FieldType.Keyword,index = false)
    private String imgPath;


    // images/2023/02/23/1a4c88fe-8738321-acxxxxxxx.jpg


//    public Item setTitle(String title){
//        this.title=title;
//        return this;
//    }


}








